1. Field of the Invention
The invention relates generally to transferring data between a communication device and a media controller in a computing device. More particularly, an embodiment of the invention allows data to be transferred between a communication device a media controller without relying on an intermediary software application.
2. Background Art
In present computer architecture, a media subsystem is typically under control of a device driver. A device driver is typically responsible for communicating with a media controller and controls the flow of data to and from the media controller. For playback of audio, for example, a software application may pass data to an audio device driver which then programs an audio controller with the relevant parameters to play back the audio stream via its corresponding audio hardware. The layers of computer architecture in the audio subsystem through which data may be directed are commonly referred to as a software stack. To reduce data transfer latencies, techniques exist for bypassing data transfer through at least part of the audio subsystem software stack. For example, in an audio capture application such as voice recording, the software application may provide an empty memory buffer to the audio device driver, which then programs the audio controller to capture data in the application-provided memory buffer. The audio controller signals the driver via an interrupt when capture is complete, and then the driver then hands-off the memory buffer back to the application.
If a separate device such as a communication device needs to utilize the capabilities of the media controller, it too needs to send data through its own software stack as well as the software stack associated with the media subsystem described above. For example, if a mobile communication device such as a PC-based cellular telephony device needs to utilize a headset attached to a PC audio controller, the software associated with the communication device needs to go through both its own driver software stack and the audio subsystem software stack. The multiple software stacks can add significant latencies to the flow of data, such that there can be a significant delay between the time media data is received by the stream from a communication device to the time it is played back to the user. Similarly, there can be a delay between the time a user speaks and the time the corresponding media data is actually handed-off to a communication device for transmission. These latencies can significantly deteriorate end-user experience when using a computing device's media controller for communications purposes.